package com.ruoyi.system.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.MajorMapper;
import com.ruoyi.system.domain.Major;
import com.ruoyi.system.service.IMajorService;

/**
 * 专业信息 服务层实现
 * 
 * @author ruoyi
 */
@Service
public class MajorServiceImpl implements IMajorService
{
    @Autowired
    private MajorMapper majorMapper;

    /**
     * 查询专业信息列表
     * 
     * @param major 专业信息
     * @return 专业信息集合
     */
    @Override
    public List<Major> selectMajorList(Major major)
    {
        return majorMapper.selectMajorList(major);
    }

    /**
     * 查询所有专业
     * 
     * @return 专业列表
     */
    @Override
    public List<Major> selectMajorAll()
    {
        return majorMapper.selectMajorAll();
    }

    /**
     * 通过专业ID查询专业信息
     * 
     * @param majorId 专业ID
     * @return 专业对象信息
     */
    @Override
    public Major selectMajorById(Long majorId)
    {
        return majorMapper.selectMajorById(majorId);
    }

    /**
     * 校验专业名称是否唯一
     * 
     * @param major 专业信息
     * @return 结果
     */
    @Override
    public boolean checkMajorNameUnique(Major major)
    {
        Long majorId = StringUtils.isNull(major.getMajorId()) ? -1L : major.getMajorId();
        Major info = majorMapper.checkMajorNameUnique(major.getMajorName());
        if (StringUtils.isNotNull(info) && info.getMajorId().longValue() != majorId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 校验专业代码是否唯一
     * 
     * @param major 专业信息
     * @return 结果
     */
    @Override
    public boolean checkMajorCodeUnique(Major major)
    {
        Long majorId = StringUtils.isNull(major.getMajorId()) ? -1L : major.getMajorId();
        Major info = majorMapper.checkMajorCodeUnique(major.getMajorCode());
        if (StringUtils.isNotNull(info) && info.getMajorId().longValue() != majorId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增保存专业信息
     * 
     * @param major 专业信息
     * @return 结果
     */
    @Override
    public int insertMajor(Major major)
    {
        return majorMapper.insertMajor(major);
    }

    /**
     * 修改保存专业信息
     * 
     * @param major 专业信息
     * @return 结果
     */
    @Override
    public int updateMajor(Major major)
    {
        return majorMapper.updateMajor(major);
    }

    /**
     * 删除专业信息
     * 
     * @param majorId 专业ID
     * @return 结果
     */
    @Override
    public int deleteMajorById(Long majorId)
    {
        return majorMapper.deleteMajorById(majorId);
    }

    /**
     * 批量删除专业信息
     * 
     * @param majorIds 需要删除的专业ID
     * @return 结果
     */
    @Override
    public int deleteMajorByIds(Long[] majorIds)
    {
        return majorMapper.deleteMajorByIds(majorIds);
    }
} 